后端

引入模块

async =  require 'async'

fs = require 'fs'

写入文件

writeFile = (address, str, cbf) ->
  write = fs.writeFileSync(address,str)
  return cbf null, write

生成html文件

htmlFile = (address, option, cbf) ->
  html = fs.readFileSync(address,option)
  return cbf null, html

生成pdf文件

pdfFile = (html, address, cbf) ->
  # console.log "html",html
  options = { format: 'A3' }
  pdf.create html, options
    .toFile address, (err, res) ->
      if (err) 
        return console.log err
      return cbf null,"success"

删除html文件

deteleHtml = (address, cbf) ->
  fs.unlink address, (err,res) ->
    if (err) 
      return console.log err
    return cbf null, 'detele success'

调用

funcs = [
  # 写入文件
  (cbf) ->
    return writeFile htmlAdr, params.str, cbf
  # 生产html文件
  (result1,cbf) ->
    return htmlFile htmlAdr, 'utf-8', cbf
  # 生产pdf文件
  (result2,cbf) ->
    return pdfFile result2, pdfAdr, cbf
  # 删除html文件
  (result3,cbf) ->
    return deteleHtml htmlAdr, cbf
]
async.waterfall funcs, (error, result) ->
  if error
    return cbf error, null
  # 返回用户信息
  res.download pdfAdr, fileName

前端

a(href="javascript:;" v-on:click.stop.prevent="onDownEsignatureLh(esignature_lh);") 下载
a = document.createElement "a"
url = window.URL.createObjectURL res.body
a.href = url
a.download = esignature_lh.ciphertext + ".pdf"
a.click()
window.URL.revokeObjectURL res.body

CcChan
53 声望5 粉丝